/* SPDX-License-Identifier: GPL-2.0 */
#ifndef KERNEL_SCHED_CPUPRI_H
#define KERNEL_SCHED_CPUPRI_H

#define CPUPRI_NR_PRIORITIES	(MAX_RT_PRIO + 2)

#define CPUPRI_INVALID		-1
#define CPUPRI_IDLE		 0
#define CPUPRI_NORMAL		 1
/* values 2-101 are RT priorities 0-99 */

struct cpupri_vec {
    atomic_t		count;
    struct cpumask		mask;
};

struct cpupri {
    struct cpupri_vec	pri_to_cpu[CPUPRI_NR_PRIORITIES];
    int			*cpu_to_pri;
};

int  cpupri_find(struct cpupri *cp, struct task_struct *p, struct cpumask *lowest_mask);
void cpupri_set(struct cpupri *cp, int cpu, int pri);
int  cpupri_init(struct cpupri *cp);
void cpupri_cleanup(struct cpupri *cp);

#endif /* KERNEL_SCHED_CPUPRI_H */
